<root xmlns="http://schemas.datacontract.org/2004/07/Microsoft.Robotics.Runtime"
    xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Robotics.Vision.Runtime.Cameras"
    xmlns:sd="http://schemas.datacontract.org/2004/07/Microsoft.Robotics.Navigation.Runtime.Motion"
    xmlns:da="http://schemas.datacontract.org/2004/07/Microsoft.Robotics.Navigation.Runtime.Localization"
    xmlns:v="http://schemas.datacontract.org/2004/07/Microsoft.Robotics.Visualization"
    xmlns:vc="http://schemas.datacontract.org/2004/07/Microsoft.Robotics.Navigation.Visualization"
    xmlns:ui="http://schemas.datacontract.org/2004/07/Microsoft.Robotics.Interface.Runtime.Input"
    xmlns:kinectHDP="http://schemas.datacontract.org/2004/07/Microsoft.Robotics.Navigation.Runtime.Perception"
    xmlns:ev4="http://schemas.datacontract.org/2004/07/Microsoft.Robotics.Hardware.EV4"
    xmlns:lm="http://schemas.datacontract.org/2004/07/Microsoft.Robotics.Navigation.Runtime.LocalMotion"
    xmlns:n="http://schemas.datacontract.org/2004/07/Microsoft.Robotics.Numerics"
    xmlns:i="http://www.w3.org/2001/XMLSchema-instance">

  <!-- The list of dlls that contain agents or agent messages -->
  <Assemblies
    xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
    <string>
      Microsoft.Robotics.Visualization, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
    </string>
    <string>
      Microsoft.Robotics.Navigation.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
    </string>
    <string>
      Microsoft.Robotics.Navigation.Visualization, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
    </string>
    <string>
      Microsoft.Robotics.Hardware.EV4, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
    </string>
 
  </Assemblies>

  <!-- The list of remote agents we want to consume over the network -->
  <RemoteAgents/>

  <!-- The list of file player agents -->
  <FilePlayerAgents/>

  <Agents>
    <!-- The list of local agents running on this machine. The Name of each agent must be unique. -->
    <Agent i:type="c:KinectAgent">
      <Name>KinectAgent</Name>
      <c:MaximumDepthImageRange>10000</c:MaximumDepthImageRange>
      <c:NoReadingValue>-32000</c:NoReadingValue>
      <c:Pose>
        <n:Orientation>
          <n:W>1</n:W>
          <n:X>0</n:X>
          <n:Y>0</n:Y>
          <n:Z>0</n:Z>
        </n:Orientation>
        <n:Position>
          <n:X>-0.059</n:X>
          <n:Y>0</n:Y>
          <n:Z>0.539</n:Z>
        </n:Position>
      </c:Pose>
      <c:TooFarValue>-32002</c:TooFarValue>
      <c:TooNearValue>-32003</c:TooNearValue>
    </Agent>

    <Agent i:type="c:KinectSimpleNoReadingFilterAgent">
      <Name>KinectFilterAgent</Name>
      <Producer>KinectAgent</Producer>
      <c:ConsecutiveNoReadingThreshold>6</c:ConsecutiveNoReadingThreshold>
      <c:InnerNeighborThreshold>2</c:InnerNeighborThreshold>
      <c:OuterNeighborThreshold>4</c:OuterNeighborThreshold>
      <c:Resolution>resolution320x240</c:Resolution>
    </Agent>
    
   <Agent i:type="vc:RightKinectAgent">
      <Name>RightKinectAgent</Name>
      <Producer>KinectFilterAgent</Producer>
    </Agent> 

    <Agent i:type="kinectHDP:KinectHorizontalDepthProfileAgent">
      <Name>KinectHorizontalDepthProfileAgent</Name>
      <Producer>KinectAgent</Producer>
      <kinectHDP:depthProfileGenerationAlgorithm>Simple</kinectHDP:depthProfileGenerationAlgorithm>
      <kinectHDP:numberOfBins>640</kinectHDP:numberOfBins>
    </Agent>

    <Agent i:type="kinectHDP:HorizontalDepthProfileLargestOpenSpaceToDirectionReference2DAgent">
      <Name>OpenSpaceDirectionReferenceAgent</Name>
      <Producer>KinectHorizontalDepthProfileAgent</Producer>
      <kinectHDP:MinOpeningSizeInMeter>0.4</kinectHDP:MinOpeningSizeInMeter>
      <kinectHDP:OpenSpaceDepthThresholdInMeters>1.2</kinectHDP:OpenSpaceDepthThresholdInMeters>
    </Agent>

    <Agent i:type="da:LocalMapAgent">
      <Name>LocalMapAgent</Name>
      <Producer>KinectHorizontalDepthProfileAgent</Producer>
      <da:LocalMapAgentParameter>
        <da:DistanceResolution>0.02</da:DistanceResolution>
        <da:LocalMapHeight>500</da:LocalMapHeight>
        <da:LocalMapWidth>500</da:LocalMapWidth>
      </da:LocalMapAgentParameter>
    </Agent>

    <!-- Models and visualization-->
    <Agent i:type="vc:DepthCameraModelAgent">
      <Name>DepthCameraModelAgent</Name>
      <v:Producer>KinectAgent</v:Producer>
    </Agent>

    <Agent i:type="vc:HorizontalDepthProfileModelAgent">
      <Name>HorizontalDepthProfileModelAgent</Name>
      <v:Producer>KinectHorizontalDepthProfileAgent</v:Producer>
      <vc:DirectionReference2DProducer>OpenSpaceDirectionReferenceAgent</vc:DirectionReference2DProducer>
      <vc:OpenSpaceDepthThresholdInMeters>1.2</vc:OpenSpaceDepthThresholdInMeters>
    </Agent>

    <Agent i:type="vc:VisibilityMapModelAgent">
      <Name>VisibilityMapModelAgent</Name>
      <v:Producer>LocalMapAgent</v:Producer>
    </Agent>

    <Agent i:type="vc:DepthImageComparisonModelAgent">
      <Name>DepthImageComparisonModelAgent</Name>
      <v:Producer>KinectAgent</v:Producer>
      <vc:RightImageProducer>RightKinectAgent</vc:RightImageProducer>
    </Agent>

    <Agent i:type="v:UserInterfaceAgent">
      <Name>UserInterface</Name>
      <v:Views>
        <v:View>
          <v:ModelAgent>DepthCameraModelAgent</v:ModelAgent>
          <v:Name>DepthCamera</v:Name>
          <v:Type>Microsoft.Robotics.Navigation.Visualization.DepthCameraView, Microsoft.Robotics.Navigation.Visualization, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</v:Type>
        </v:View>
        <v:View>
          <v:ModelAgent>HorizontalDepthProfileModelAgent</v:ModelAgent>
          <v:Name>HorizontalDepthProfile</v:Name>
          <v:Type>Microsoft.Robotics.Navigation.Visualization.HorizontalDepthProfileView, Microsoft.Robotics.Navigation.Visualization, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</v:Type>
        </v:View>
        <v:View>
          <v:ModelAgent>DepthImageComparisonModelAgent</v:ModelAgent>
          <v:Name>ImageCompare</v:Name>
          <v:Type>Microsoft.Robotics.Navigation.Visualization.DepthImageComparisonView, Microsoft.Robotics.Navigation.Visualization, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</v:Type>
        </v:View>
        <v:View>
          <v:ModelAgent>VisibilityMapModelAgent</v:ModelAgent>
          <v:Name>VisibilityMapView</v:Name>
          <v:Type>Microsoft.Robotics.Navigation.Visualization.VisibilityMapView, Microsoft.Robotics.Navigation.Visualization, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</v:Type>
        </v:View>
      </v:Views>
    </Agent>
  </Agents>

  <!-- The list of local agents we want to expose to other machines -->
  <NetworkEnabledAgents/>

  <!-- The list of file recorder agents -->
  <FileRecorderAgents/>
</root>
